<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SoupSessionSync</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<link rel="home" href="index.html" title="libsoup Reference Manual">
<link rel="up" href="ch02.html" title="Core API">
<link rel="prev" href="SoupSessionAsync.html" title="SoupSessionAsync">
<link rel="next" href="libsoup-2.4-soup-status.html" title="soup-status">
<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="SoupSessionAsync.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">libsoup Reference Manual</th>
<td><a accesskey="n" href="libsoup-2.4-soup-status.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#SoupSessionSync.synopsis" class="shortcut">Top</a>
                   | 
                  <a href="#SoupSessionSync.description" class="shortcut">Description</a>
                   | 
                  <a href="#SoupSessionSync.object-hierarchy" class="shortcut">Object Hierarchy</a>
</td></tr>
</table>
<div class="refentry">
<a name="SoupSessionSync"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="SoupSessionSync.top_of_page"></a>SoupSessionSync</span></h2>
<p>SoupSessionSync — Soup session for blocking I/O in multithreaded
programs.</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsynopsisdiv">
<a name="SoupSessionSync.synopsis"></a><h2>Synopsis</h2>
<pre class="synopsis">
#include &lt;libsoup/soup.h&gt;

                    <a class="link" href="SoupSessionSync.html#SoupSessionSync-struct" title="SoupSessionSync">SoupSessionSync</a>;
<a class="link" href="SoupSession.html" title="SoupSession"><span class="returnvalue">SoupSession</span></a> *       <a class="link" href="SoupSessionSync.html#soup-session-sync-new" title="soup_session_sync_new ()">soup_session_sync_new</a>               (<em class="parameter"><code><span class="type">void</span></code></em>);
<a class="link" href="SoupSession.html" title="SoupSession"><span class="returnvalue">SoupSession</span></a> *       <a class="link" href="SoupSessionSync.html#soup-session-sync-new-with-options" title="soup_session_sync_new_with_options ()">soup_session_sync_new_with_options</a>  (<em class="parameter"><code>const <span class="type">char</span> *optname1</code></em>,
                                                         <em class="parameter"><code>...</code></em>);
</pre>
</div>
<div class="refsect1">
<a name="SoupSessionSync.object-hierarchy"></a><h2>Object Hierarchy</h2>
<pre class="synopsis">
  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
   +----<a class="link" href="SoupSession.html" title="SoupSession">SoupSession</a>
         +----SoupSessionSync
</pre>
</div>
<div class="refsect1">
<a name="SoupSessionSync.description"></a><h2>Description</h2>
<p>
<a class="link" href="SoupSessionSync.html" title="SoupSessionSync"><span class="type">SoupSessionSync</span></a> is an implementation of <a class="link" href="SoupSession.html" title="SoupSession"><span class="type">SoupSession</span></a> that uses
synchronous I/O, intended for use in multi-threaded programs.
</p>
<p>
You can use <a class="link" href="SoupSessionSync.html" title="SoupSessionSync"><span class="type">SoupSessionSync</span></a> from multiple threads concurrently.
Eg, you can send a <a class="link" href="SoupMessage.html" title="SoupMessage"><span class="type">SoupMessage</span></a> in one thread, and then while
waiting for the response, send another <a class="link" href="SoupMessage.html" title="SoupMessage"><span class="type">SoupMessage</span></a> from another
thread. You can also send a message from one thread and then call
<a class="link" href="SoupSession.html#soup-session-cancel-message" title="soup_session_cancel_message ()"><code class="function">soup_session_cancel_message()</code></a> on it from any other thread (although
you need to be careful to avoid race conditions, where the message
finishes and is then unreffed by the sending thread just before you
cancel it).
</p>
<p>
However, the majority of other types and methods in libsoup are not
MT-safe. In particular, you <span class="emphasis"><em>cannot</em></span> modify or
examine a <a class="link" href="SoupMessage.html" title="SoupMessage"><span class="type">SoupMessage</span></a> while it is being transmitted by
<a class="link" href="SoupSessionSync.html" title="SoupSessionSync"><span class="type">SoupSessionSync</span></a> in another thread. Once a message has been handed
off to <a class="link" href="SoupSessionSync.html" title="SoupSessionSync"><span class="type">SoupSessionSync</span></a>, it can only be manipulated from its signal
handler callbacks, until I/O is complete.
</p>
</div>
<div class="refsect1">
<a name="SoupSessionSync.details"></a><h2>Details</h2>
<div class="refsect2">
<a name="SoupSessionSync-struct"></a><h3>SoupSessionSync</h3>
<pre class="programlisting">typedef struct _SoupSessionSync SoupSessionSync;</pre>
<p>
</p>
</div>
<hr>
<div class="refsect2">
<a name="soup-session-sync-new"></a><h3>soup_session_sync_new ()</h3>
<pre class="programlisting"><a class="link" href="SoupSession.html" title="SoupSession"><span class="returnvalue">SoupSession</span></a> *       soup_session_sync_new               (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>
Creates an synchronous <a class="link" href="SoupSession.html" title="SoupSession"><span class="type">SoupSession</span></a> with the default options.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>the new session.</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2">
<a name="soup-session-sync-new-with-options"></a><h3>soup_session_sync_new_with_options ()</h3>
<pre class="programlisting"><a class="link" href="SoupSession.html" title="SoupSession"><span class="returnvalue">SoupSession</span></a> *       soup_session_sync_new_with_options  (<em class="parameter"><code>const <span class="type">char</span> *optname1</code></em>,
                                                         <em class="parameter"><code>...</code></em>);</pre>
<p>
Creates an synchronous <a class="link" href="SoupSession.html" title="SoupSession"><span class="type">SoupSession</span></a> with the specified options.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>optname1</code></em> :</span></p></td>
<td>name of first property to set</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td>
<td>value of <em class="parameter"><code>optname1</code></em>, followed by additional property/value pairs</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>the new session.</td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
<div class="footer">
<hr>
          Generated by GTK-Doc V1.18</div>
</body>
</html>